package com.atguigu.patterns.factory.simplefactory;

import com.atguigu.patterns.factory.result.CheesePizza;
import com.atguigu.patterns.factory.result.GreekPizza;
import com.atguigu.patterns.factory.result.PepperPizza;
import com.atguigu.patterns.factory.result.Pizza;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Client {

	public static void main(String[] args) {
		Client client = new Client(new SimpleFactory());
		String type = client.getType();
		Pizza pizza = client.simpleFactory.createPizza(type);

		// 后续操作
		//输出pizza
		if(pizza != null) { //订购成功
			pizza.prepare();
			pizza.bake();
			pizza.cut();
			pizza.box();
		} else {
			System.out.println(" 订购披萨失败 ");
		}
	}

	// 构造器
	public Client() {
		Pizza pizza = null;
		String orderType; // 订购披萨的类型
		do {
			orderType = getType();
			if (orderType.equals("greek")) {
				pizza = new GreekPizza();
				pizza.setName(" 希腊披萨 ");
			} else if (orderType.equals("cheese")) {
				pizza = new CheesePizza();
				pizza.setName(" 奶酪披萨 ");
			} else if (orderType.equals("pepper")) {
				pizza = new PepperPizza();
				pizza.setName("胡椒披萨");
			} else {
				break;
			}
			//输出pizza 制作过程
			pizza.prepare();
			pizza.bake();
			pizza.cut();
			pizza.box();

		} while (true);
	}

	//定义一个简单工厂对象
	SimpleFactory simpleFactory;
	Pizza pizza = null;
	
	//构造器
	public Client(SimpleFactory simpleFactory) {
		this.simpleFactory = simpleFactory;
	}
	
	// 写一个方法，可以获取客户希望订购的披萨种类
	private String getType() {
		try {
			BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
			System.out.println("input pizza 种类:");
			String str = strin.readLine();
			return str;
		} catch (IOException e) {
			e.printStackTrace();
			return "";
		}
	}

}
